package org.dromara.Nyt7PolicyInsurance.domain.bo;

import com.baomidou.mybatisplus.annotation.TableId;
import org.dromara.Nyt7PolicyInsurance.domain.Nyt7PolicyInsurance;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.math.BigDecimal;

/**
 * 保单查询业务对象 nyt_7_policy_insurance
 *
 * @author Lion Li
 * @date 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = Nyt7PolicyInsurance.class, reverseConvertGenerate = false)
public class Nyt7PolicyInsuranceBo extends BaseEntity {

    /**
     * id
     */
    @NotNull(message = "id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 保单号
     */
    @NotBlank(message = "保单号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String policyNumber;

    /**
     * 投保标识
     */
    @NotBlank(message = "投保标识不能为空", groups = { AddGroup.class, EditGroup.class })
    private String insuranceIdentifier;

    /**
     * 投保总户数
     */
    @NotNull(message = "投保总户数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long totalInsuredHouseholds;


    /**
     * 作物代码
     */
    @NotBlank(message = "作物代码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String cropCode;

    /**
     * 险种代码
     */
    @NotBlank(message = "险种代码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String insuranceTypeCode;

    /**
     * 总承包面积
     */
    @NotNull(message = "总承包面积不能为空", groups = { AddGroup.class, EditGroup.class })
    private Double totalContractArea;

    /**
     * 保费总额
     */
    @NotNull(message = "保费总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalPremium;

    /**
     * 用户自缴总额
     */
    @NotNull(message = "用户自缴总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalSelfPaidByUser;

    /**
     * 中央财政补贴总额
     */
    @NotNull(message = "中央财政补贴总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalCentralFiscalSubsidy;

    /**
     * 省级财政补贴总额
     */
    @NotNull(message = "省级财政补贴总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalProvincialFiscalSubsidy;

    /**
     * 地市财政补贴总额
     */
    @NotNull(message = "地市财政补贴总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalMunicipalFiscalSubsidy;

    /**
     * 区县财政补贴总额
     */
    @NotNull(message = "区县财政补贴总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalDistrictAndCountyFiscalSubsidy;

    /**
     * 其他财政补贴总额
     */
    @NotNull(message = "其他财政补贴总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalOtherFiscalSubsidies;

    /**
     * 保险公司id
     */
    @NotNull(message = "请输入正确的保险公司名称", groups = { AddGroup.class, EditGroup.class })
    private Long postId;

    /**
     * 地块id
     */
    @NotNull(message = "请输入正确的地块编号", groups = { AddGroup.class, EditGroup.class })
    private Long plotId;

    /**
     * 农户id
     */
    @NotNull(message = "请填入正确的投保人姓名", groups = { AddGroup.class, EditGroup.class })
    private Long farmerId;


    /**
     * 保险公司
     */
    private String insuranceCompanyName;

    /**
     * 经度坐标
     */
    private String latitude;

    /**
     * 纬度坐标
     */
    private String longitude;
}
